﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Configuration;
using System.Data;

public partial class CPD_HelpSolicitacoes : System.Web.UI.Page
{
	private DataTable dtSenac = null;
	private DataTable dtFaculdade = null;

	protected void Page_Load(object sender, EventArgs e)
	{
		if (Session["chapa"] == null)
		{
			Response.Redirect("../mensagens_sistema.aspx?id_mensagem=2");
		}
		else
		{
			dtSenac = new DataTable();
			dtFaculdade = new DataTable();
			CarregarTabelasDropDownList();

			if (!Page.IsPostBack)
			{
				try
				{
					this.ddCodCategoriaProblema.DataSource = dtSenac;
					this.ddCodCategoriaProblema.DataValueField = "CodCategoriaProblema";
					this.ddCodCategoriaProblema.DataTextField = "CategoriaProblema";
					this.ddCodCategoriaProblema.DataBind();

					string[] nomeComputador = System.Net.Dns.GetHostEntry(Request.ServerVariables["remote_addr"].ToString()).HostName.Split('.');
					txtNomeMaquina.Text = nomeComputador[0].ToUpper();
				}
				catch (Exception)
				{
					txtNomeMaquina.Text = "";
				}
				txtIP.Text = Request.ServerVariables["REMOTE_ADDR"].ToString();

				if (Session["cod_lotacao"].ToString() == "14")
				{
					lblLinkSolicitarPOutraPessoa.Visible = true;
					lblLinkSolicitarPOutraPessoa.Text = "(<a href=\"#\" onclick=\"window.open('selecionarfuncionario.aspx','','width=425px,height=150px')\">Solicitar por outra pessoa</a>)";
				}
				lblSolicitadoPor.Text = Session["nome"].ToString();
				hfChapa.Value = Session["chapa"].ToString();
			}
		}
	}
	protected void bCadastrar_Click(object sender, ImageClickEventArgs e)
	{
		if (FileUpload1.HasFile)
		{
			if (String.Compare(System.IO.Path.GetExtension(FileUpload1.FileName), ".doc", true) != 0 && String.Compare(System.IO.Path.GetExtension(FileUpload1.FileName), ".png", true) != 0 && String.Compare(System.IO.Path.GetExtension(FileUpload1.FileName), ".docx", true) != 0)
			{
				lblMensagem.ForeColor = System.Drawing.Color.Red;
				lblMensagem.Text = "Apenas arquivos com extensão .png, .doc e .docx são permitidos para envio";
			}
			else
			{
				if (FileUpload1.PostedFile.ContentLength > 2048000)
				{
					lblMensagem.ForeColor = System.Drawing.Color.Red;
					lblMensagem.Text = "Você pode enviar arquivos com até 2MB de tamanho.";
				}
				else
				{
					string nomeArquivo = System.IO.Path.GetFileNameWithoutExtension(FileUpload1.FileName) + DateTime.Now.ToString("ddMMyyyyhhmmss") + System.IO.Path.GetExtension(FileUpload1.FileName);
					FazUploadArquivo(nomeArquivo);
					CadastraSolicitacao(nomeArquivo);
				}
			}

		}
		else
		{
			CadastraSolicitacao("");
		}
	}


	protected void FazUploadArquivo(string nomeArquivo)
	{
		string caminhoArquivo = Server.MapPath("~/intranet.net/cpd/printscreens/" + nomeArquivo);
		FileUpload1.SaveAs(caminhoArquivo);
	}

	protected void CadastraSolicitacao(string NomeArquivo)
	{
		try
		{
			string idSolicitacao = Session["cod_lotacao"].ToString() + DateTime.Now.ToString("ddMMyyhhmmss");

			if (InsereSolicitacao(idSolicitacao, hfChapa.Value, int.Parse(Session["cod_lotacao"].ToString()), int.Parse(ddCodCategoriaProblema.SelectedValue), txtIP.Text, txtTombamento.Text, txtRelato.Text, txtRamal.Text, NomeArquivo, txtNomeMaquina.Text))
			{
				lblMensagem.ForeColor = System.Drawing.Color.Blue;
				lblMensagem.Text = "<hr />Solicitação cadastrada com sucesso!<br />Protocolo: " + idSolicitacao;
				LimpaCampos();
				lblSolicitadoPor.Text = Session["nome"].ToString();
				hfChapa.Value = Session["chapa"].ToString();
			}
		}
		catch (Exception erro)
		{
			lblMensagem.ForeColor = System.Drawing.Color.Red;
			lblMensagem.Text = "Falha na inserção do registro.<br />Erro: " + erro.Message;
		}

	}

	private bool InsereSolicitacao(string idSolicitacao, string chapa, int codLotacao, int codCategoriaProblema, string ip, string tombamento, string relato, string ramal, string url, string nomeMaquina)
	{
		bool solicitacaoCadastrada = false;
		SqlConnection conexaoIntranet = new SqlConnection(ConfigurationManager.ConnectionStrings["conexao_intranet"].ConnectionString);
		try
		{
			if (conexaoIntranet != null && conexaoIntranet.State != ConnectionState.Open)
				conexaoIntranet.Open();

			string instrucao = "INSERT INTO CPDHelpSolicitacoes (IDSolicitacao, Chapa, CodLotacao, CodCategoriaProblema, IP, Tombamento, Relato, Ramal, DataSolicitacao, Status, BaseConhecimento, URL, NomeMaquina) VALUES ('" + idSolicitacao + "','" + chapa + "', " + codLotacao.ToString() + ", " + ddCodCategoriaProblema.SelectedValue.ToString() + ", '" + ip + "', '" + tombamento + "', '" + relato + "', '" + ramal + "', GetDate(), 'AB', 0, '" + url + "', '" + nomeMaquina + "')";
			SqlCommand insereSolicitacao = new SqlCommand(instrucao, conexaoIntranet);
			solicitacaoCadastrada = (insereSolicitacao.ExecuteNonQuery() > 0);
		}
		finally
		{
			if (conexaoIntranet.State == ConnectionState.Open)
				conexaoIntranet.Close();
		}

		return solicitacaoCadastrada;
	}

	protected void LimpaCampos()
	{
		txtRamal.Text = "";
		txtTombamento.Text = "";
		ddCodCategoriaProblema.SelectedIndex = -1;
		txtRelato.Text = "";
	}

	/// <summary>
	/// Responsável por buscar no banco de dados as informações referentes a 'CategoriaProblemas' do Senac e da Faculdade, depois armazená-las
	/// em seus devidos datatables para serem exibidos caso haja mudança no radiobutton.
	/// </summary>
	protected void CarregarTabelasDropDownList()
	{
		SqlConnection conexaoIntranet = new SqlConnection(ConfigurationManager.ConnectionStrings["conexao_intranet"].ConnectionString);
		try
		{
			if (conexaoIntranet != null && conexaoIntranet.State != ConnectionState.Open)
				conexaoIntranet.Open();

			string sqlSenac = "SELECT * FROM CPDHelpCategoriaProblemas WHERE PertenceFaculdade = 0";
			SqlCommand selectSenac = new SqlCommand(sqlSenac, conexaoIntranet);
			SqlDataAdapter adapterSenac = new SqlDataAdapter(selectSenac);
			adapterSenac.Fill(dtSenac);

			string sqlFaculdade = "SELECT * FROM CPDHelpCategoriaProblemas WHERE PertenceFaculdade = 1";
			SqlCommand selectFaculdade = new SqlCommand(sqlFaculdade, conexaoIntranet);
			SqlDataAdapter adapterFaculdade = new SqlDataAdapter(selectFaculdade);
			adapterFaculdade.Fill(dtFaculdade);

		}
		finally
		{
			if (conexaoIntranet.State == ConnectionState.Open)
				conexaoIntranet.Close();
		}
	}

	/// <summary>
	/// Responsável por fazer a mudança de conteúdo do dropdownlist. Entre Senac e Faculdade.
	/// </summary>
	/// <param name="sender"></param>
	/// <param name="e"></param>
	protected void rblLocal_Changed(Object sender, EventArgs e)
	{
		if (this.rblLocal.SelectedIndex == 0)
			this.ddCodCategoriaProblema.DataSource = dtSenac;
		else if (this.rblLocal.SelectedIndex == 1)
			this.ddCodCategoriaProblema.DataSource = dtFaculdade;

		this.ddCodCategoriaProblema.DataValueField = "CodCategoriaProblema";
		this.ddCodCategoriaProblema.DataTextField = "CategoriaProblema";
		this.ddCodCategoriaProblema.DataBind();
	}
}
